home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / sharewar / slunec / app / httrack.exe / {app} / src_win / WinHTTrack / trans.cpp < prev    next >
C/C++ Source or Header  |  2002-04-14  |  12KB  |  461 lines

  1. // trans.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "trans.h"
  7.  
  8. extern "C" {
  9.   #include "htscore.h"
  10.   #include "htslib.h"
  11. }
  12.  
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18.  
  19. extern char OPTIONhh[32];
  20. extern char OPTIONmm[32];
  21. extern char OPTIONss[32];
  22. extern HICON httrack_icon;
  23.  
  24. // Chargement des librairies RAS
  25. #if USE_RAS
  26. extern CDynamicRAS* LibRas;
  27. extern int LibRasUse;
  28. #endif
  29.  
  30. // Helper
  31. extern LaunchHelp* HtsHelper;
  32.  
  33. // reference sur objet
  34. extern Ctrans* dialog2;
  35.  
  36. /* Main WizTab frame */
  37. #include "WizTab.h"
  38. extern CWizTab* this_CWizTab;
  39. extern CWizTab* this_intCWizTab2;
  40.  
  41. /* Main splitter frame */
  42. #include "DialogContainer.h"
  43. #include "splitter.h"
  44. extern CSplitterFrame* this_CSplitterFrame;
  45.  
  46. // prise en compte prefs
  47. extern void compute_options() ;
  48.  
  49. /* Back to FirstInfo */
  50. //#include "FirstInfo.h"
  51.  
  52. /* Dialog final */
  53. #include "inprogress.h"
  54.  
  55. /* maintab */
  56. #include "maintab.h"
  57. extern CMainTab* maintab;
  58.  
  59. /* newproj */
  60. #include "newproj.h"
  61. extern CNewProj* dialog0;
  62.  
  63. extern CShellApp* CShellApp_app;
  64.  
  65. /* debug */
  66. extern FILE* fp_debug;
  67.  
  68.  
  69. /////////////////////////////////////////////////////////////////////////////
  70. // Ctrans dialog
  71.  
  72. IMPLEMENT_DYNCREATE(Ctrans, CPropertyPage)
  73.  
  74. Ctrans::Ctrans()
  75.     : CPropertyPage(Ctrans::IDD)
  76. {
  77.   dialog2=this;    /* NOTER REFERENCE */
  78.   hms=0;
  79.     //{{AFX_DATA_INIT(Ctrans)
  80.     m_hh = _T("");
  81.     m_mm = _T("");
  82.     m_ss = _T("");
  83.     m_rasid = -1;
  84.     m_rasdisc = FALSE;
  85.     //}}AFX_DATA_INIT
  86. }
  87.  
  88. Ctrans::~Ctrans() {
  89.   dialog2=NULL;
  90. }
  91.  
  92. void Ctrans::DoDataExchange(CDataExchange* pDX)
  93. {
  94.     CPropertyPage::DoDataExchange(pDX);
  95.     //{{AFX_DATA_MAP(Ctrans)
  96.     DDX_Control(pDX, IDC_rasdisc, m_ctl_rasdisc);
  97.     DDX_Control(pDX, IDC_cnx, m_ctlcnx);
  98.     DDX_Control(pDX, IDC_rasid, m_ctlrasid);
  99.     DDX_Control(pDX, IDC_wait, m_ctl_wait);
  100.     DDX_Control(pDX, IDC_ss, m_ctl_ss);
  101.     DDX_Control(pDX, IDC_mm, m_ctl_mm);
  102.     DDX_Control(pDX, IDC_hh, m_ctl_hh);
  103.     DDX_Text(pDX, IDC_hh, m_hh);
  104.     DDV_MaxChars(pDX, m_hh, 2);
  105.     DDX_Text(pDX, IDC_mm, m_mm);
  106.     DDV_MaxChars(pDX, m_mm, 2);
  107.     DDX_Text(pDX, IDC_ss, m_ss);
  108.     DDV_MaxChars(pDX, m_ss, 2);
  109.     DDX_CBIndex(pDX, IDC_rasid, m_rasid);
  110.     DDX_Check(pDX, IDC_rasdisc, m_rasdisc);
  111.     //}}AFX_DATA_MAP
  112. }
  113.  
  114.  
  115. BEGIN_MESSAGE_MAP(Ctrans, CPropertyPage)
  116.     //{{AFX_MSG_MAP(Ctrans)
  117.     ON_EN_CHANGE(IDC_hh, OnChangehh)
  118.     ON_WM_HELPINFO()
  119.     ON_CBN_SELCHANGE(IDC_rasid, OnSelchangerasid)
  120.     ON_CBN_DROPDOWN(IDC_rasid, OnDropdownrasid)
  121.     ON_WM_SHOWWINDOW()
  122.     ON_BN_CLICKED(IDC_rasdisc, Onrasdisc)
  123.     //}}AFX_MSG_MAP
  124.     ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  125.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  126.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  127.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  128. END_MESSAGE_MAP()
  129.  
  130. /////////////////////////////////////////////////////////////////////////////
  131. // Ctrans message handlers
  132.  
  133. void Ctrans::OnChangehh() 
  134. {
  135.   CString st="";
  136.   char tempo[256];
  137.  
  138.   // TODO: If this is a RICHEDIT control, the control will not
  139.     // send this notification unless you override the CPropertyPage::OnInitDialog()
  140.     // function to send the EM_SETEVENTMASK message to the control
  141.     // with the ENM_CHANGE flag ORed into the lParam mask.
  142.  
  143.   // TODO: Add your control notification handler code here
  144.  
  145.   GetDlgItemText(IDC_hh,st);
  146.   strcpy(tempo,st);
  147.  
  148.   if ((strlen(tempo)>0)!=hms) {
  149.     hms=!hms;
  150.     if (strlen(tempo)>0) {
  151.       m_ctl_wait.ModifyStyle(WS_DISABLED,0);
  152.     }
  153.     else {
  154.       m_ctl_wait.ModifyStyle(0,WS_DISABLED);
  155.     }    
  156.     m_ctl_wait.RedrawWindow();
  157.  }  
  158.  
  159. // m_wait=TRUE; 
  160.  
  161. }
  162.  
  163. BOOL Ctrans::OnInitDialog() 
  164. {
  165.     CPropertyPage::OnInitDialog();
  166.  
  167.   ((CButton*)GetDlgItem(IDC_select_start))->SetCheck(1);
  168.   strcpy(RasString,"");
  169.   
  170.   SetIcon(httrack_icon,false);
  171.   SetIcon(httrack_icon,true);  
  172.     EnableToolTips(true);     // TOOL TIPS
  173.  
  174.   // Patcher l'interface pour les Franτais ;-)
  175.   if (LANG_T(-1)) {    // Patcher en franτais
  176.     //SetDlgItemText(,"");
  177.     SetWindowText(LANG(LANG_J9) /*"DΘmarrer.."*/);
  178.     SetDlgItemText(IDC_select_start,LANG(LANG_J10) /*"Vous pouvez dΘmarrer le miroir en pressant la touche DEMARRER,\nou dΘfinir avant les options de connexion"*/);
  179.     SetDlgItemText(IDC_select_save,LANG(LANG_J10b));
  180.     SetDlgItemText(IDC_STATIC_delay,LANG(LANG_J11) /*"Retarder"*/);
  181.     SetDlgItemText(IDC_wait,LANG(LANG_J12) /*"Attendre avant de commencer jusqu'α: (hh/mm/ss)"*/);
  182.     //SetDlgItemText(IDC_avant,LANG(LANG_BACK) /*"<- AVANT"*/);
  183.     SetDlgItemText(IDCANCEL,LANG(LANG_QUIT) /*"Quitter"*/);
  184.     SetDlgItemText(IDOK,LANG(LANG_J13) /*"DEMARRER!"*/);
  185.     SetDlgItemText(IDC_STATIC_ras,LANG(LANG_J14) /*"Connexion provider"*/);
  186.     SetDlgItemText(IDC_cnx,LANG(LANG_J15) /*"Connecter α ce provider"*/);
  187.     SetDlgItemText(IDC_rasdisc,LANG_J16);
  188.   }
  189.  
  190.   // liste vide pour commencer
  191.   isfilled=FALSE;
  192.   FillProviderList(0);
  193.   m_ctlrasid.SetCurSel(0);
  194.  
  195.     return TRUE;  // return TRUE unless you set the focus to a control
  196.                   // EXCEPTION: OCX Property Pages should return FALSE
  197. }
  198.  
  199.  
  200. void Ctrans::FillProviderList(int fill) 
  201. {
  202. // remplssage su champ des noms de connexion RAS
  203. #if USE_RAS
  204.   if (LibRasUse && fill) {
  205.     DWORD size;
  206.     RASENTRYNAME* adr;
  207.     int count=256;
  208.     size = sizeof(RASENTRYNAME)*(count+2);
  209.     adr = (RASENTRYNAME*) (char*) calloc(size,1);
  210.     if (adr) {
  211.       DWORD ent;
  212.       int i;
  213.       for(i=0;i<count;i++) {
  214.         adr[i].dwSize=sizeof(RASENTRYNAME);
  215.         strcpy(adr[i].szEntryName,"");
  216.       }
  217.       if (LibRas->RasEnumEntries(NULL,NULL,(RASENTRYNAME*) adr,&size,&ent) == 0) {
  218.         int i;
  219.         GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  220.         GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  221.         m_ctlrasid.ResetContent();
  222.         m_ctlrasid.InsertString(-1,LANG(LANG_J2 /*"do not connect to a provider (already connected)","pas de connexion α un provider (dΘja connectΘ)"*/));
  223.         for(i=0;i<(int) ent;i++) {
  224.           m_ctlrasid.InsertString(-1,adr[i].szEntryName);
  225.         }
  226.       }
  227.       free(adr);
  228.     }
  229.   } else
  230. #endif
  231.   {
  232.     if (LibRasUse) {
  233.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  234.     } else {
  235.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(0,WS_DISABLED);
  236.     }
  237.     GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  238.     m_ctlrasid.ResetContent();
  239.     m_ctlrasid.InsertString(-1,LANG_J2b);
  240.   }
  241. }
  242.  
  243.  
  244. // ------------------------------------------------------------
  245. // TOOL TIPS
  246. //
  247. // ajouter dans le .cpp:
  248. // remplacer les deux Wid1:: par le nom de la classe::
  249. // dans la message map, ajouter
  250. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  251. // dans initdialog ajouter
  252. // EnableToolTips(true);     // TOOL TIPS
  253. //
  254. // ajouter dans le .h:
  255. // char* GetTip(int id);
  256. // et en generated message map
  257. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  258. BOOL Ctrans::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  259. {
  260.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  261.   UINT nID =pNMHDR->idFrom;
  262.   if (pTTT->uFlags & TTF_IDISHWND)
  263.   {
  264.     // idFrom is actually the HWND of the tool
  265.     nID = ::GetDlgCtrlID((HWND)nID);
  266.     if(nID)
  267.     {
  268.       char* st=GetTip(nID);
  269.       if (st != "") {
  270.         pTTT->lpszText = st;
  271.         pTTT->hinst = AfxGetResourceHandle();
  272.         return(TRUE);
  273.       }
  274.     }
  275.   }
  276.   return(FALSE);
  277. }
  278. char* Ctrans::GetTip(int ID)
  279. {
  280.   switch(ID) {
  281.   case IDC_rasid: return LANG_J8b; break;
  282.     case IDC_hh: case IDC_mm: case IDC_ss: 
  283.       return LANG(LANG_J3); break; // "Schedule the mirror","Programmer un miroir"); break;
  284.     case IDCANCEL:  return LANG(LANG_J4); break; // "Quit WinHTTrack","Quitter WinHTTrack"); break;
  285.     case IDC_avant: return LANG(LANG_J5); break; // "Back to the start page","Retour α la premiΦre page"); break;
  286.     case IDOK:      return LANG(LANG_J6); break; // "Click to start!","Clic pour dΘmarrer!"); break;
  287.     case IDC_rasdisc: return LANG_J17; break;
  288.     //case : return ""; break;
  289.   }
  290.   return "";
  291. }
  292. // TOOL TIPS
  293. // ------------------------------------------------------------
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300. // Appel aide
  301. BOOL Ctrans::OnHelpInfo2() {
  302.   return OnHelpInfo(NULL);
  303. }
  304.  
  305. BOOL Ctrans::OnHelpInfo(HELPINFO* dummy) 
  306. {
  307.   //return CPropertyPage::OnHelpInfo(pHelpInfo);
  308.   HtsHelper->Help();
  309.   return true;
  310.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  311.   //return true;
  312. }
  313.  
  314. void Ctrans::OnSelchangerasid() 
  315. {
  316.   m_ctl_rasdisc.SetCheck(1);
  317.   int r = m_ctlrasid.GetCurSel();
  318.   if (r!=CB_ERR) {
  319.     if (r==0) {
  320.       m_ctlcnx.ModifyStyle(0,WS_DISABLED); 
  321.     } else {
  322.       m_ctlcnx.ModifyStyle(WS_DISABLED,0); 
  323.     }
  324.     m_ctlcnx.RedrawWindow();
  325.   }
  326. }
  327.  
  328. BOOL Ctrans::OnWizardFinish( )
  329. {
  330.   BOOL DoLaunchMirror = ((CButton*)GetDlgItem(IDC_select_start))->GetCheck();
  331.  
  332.     // TODO: Add extra validation here
  333.   int r = m_ctlrasid.GetCurSel();
  334.   strcpy(RasString,"");
  335.   if ((r!=CB_ERR) && (r != 0)) {    // sΘlection provider
  336.     if (m_ctlrasid.GetLBText(r,RasString) != CB_ERR) {
  337.       if (strlen(RasString)>0) {
  338.         //
  339. #if USE_RAS
  340.         if (LibRasUse) {
  341.           if (strlen(RasString)>0) {    // sΘlection provider
  342.             BOOL ifpass;
  343.             dial.dwSize = sizeof(dial);
  344.             strcpy(dial.szEntryName,RasString);
  345.             strcpy(dial.szPhoneNumber,"");
  346.             strcpy(dial.szCallbackNumber,"");
  347.             strcpy(dial.szUserName,"");
  348.             strcpy(dial.szPassword,"");
  349.             strcpy(dial.szDomain,"");
  350.             if (!LibRas->RasGetEntryDialParams(NULL,&dial,&ifpass)) {
  351.               if (!ifpass) {    // pas de pass
  352.                 AfxMessageBox(LANG(LANG_J7 /*"No saved password for this connection!","Pas de mot de passe sauvΘ pour cette connexion!"*/));
  353.                 return 0;    // cancel
  354.               }
  355.             } else {
  356.               AfxMessageBox(LANG(LANG_J8 /*"Can not get RAS setup","Impossible d'obtenir les paramΦtres de connexion"*/));
  357.               return 0;    // cancel
  358.             }
  359.           }
  360.         }
  361. #endif
  362.         //
  363.       }
  364.     }
  365.   }
  366.  
  367.   /* prise en compte des options */
  368.   UpdateData(TRUE);         // DoDataExchange
  369.   compute_options() ;
  370.  
  371.   // Index "top" si nΘcessaire!
  372.   if (maintab->m_option3.m_windebug) {
  373.     fp_debug=fopen("winhttrack.log","wb");
  374.   } else {
  375.     fp_debug = NULL;
  376.   }
  377.   if (fp_debug) {
  378.     fprintf(fp_debug,"Writing winprofile.ini\r\n");
  379.     fflush(fp_debug);
  380.   }
  381.   /*
  382.   {
  383.     char path[1024];
  384.     strcpy(path,dialog0->GetBasePath());
  385.     make_empty_index(path);
  386.   }
  387.   */
  388.   
  389.   // sauver profile dans hts-cache si besoin est
  390.   //if(maintab->m_option3.m_cache) {
  391.   Save_current_profile(0);
  392.   //}
  393.   // FIN sauver profile dans hts-cache si besoin est
  394.   if (fp_debug) {
  395.     if (DoLaunchMirror)
  396.       fprintf(fp_debug,"Profile written, launching mirror\r\n");
  397.     else
  398.       fprintf(fp_debug,"Profile written, saving settings\r\n");
  399.     fflush(fp_debug);
  400.   }
  401.   CShellApp_app->end_path=dialog0->GetBasePath();
  402.   CShellApp_app->end_path_complete=dialog0->GetPath();
  403.  
  404.   if (DoLaunchMirror) {
  405.     /* Switcher sur Cinprogress! */
  406.     /*this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(Cinprogress));*/
  407.     this_CWizTab->ModifyStyle(WS_VISIBLE,0,0);
  408.     this_CWizTab->RedrawWindow();
  409.     //
  410.     //{
  411.     //  CWizTab* tmp;
  412.     //  tmp=this_CWizTab;
  413.     this_CWizTab=this_intCWizTab2;
  414.     //  this_CWizTab2=tmp;
  415.     //}
  416.     //
  417.     this_CWizTab->ModifyStyle(0,WS_VISIBLE,0);
  418.     this_CWizTab->ModifyStyle(WS_DISABLED,0,0);
  419.     this_CSplitterFrame->RedrawWindow();
  420.     this_CWizTab->FinalInProgress();
  421.     // Lancement du miroir
  422.     LaunchMirror();
  423.   } else {      /* Ok, saved, exit (new project) */
  424.     this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  425.   }
  426.  
  427.     return 0;
  428. }
  429.  
  430. void Ctrans::OnDropdownrasid() 
  431. {
  432. #if USE_RAS
  433.   if (!isfilled) {
  434.     isfilled=TRUE;
  435.     InitRAS();
  436.     FillProviderList(1);
  437.   }
  438. #endif
  439. }
  440.  
  441. BOOL Ctrans::OnSetActive( ) {
  442.   this_CWizTab->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
  443.   WHTT_LOCATION("trans");
  444.   return 1;
  445. }
  446.  
  447. BOOL Ctrans::OnQueryCancel( ) {
  448.   this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  449.   return 0;
  450. }
  451.  
  452. BOOL Ctrans::OnKillActive( ) {
  453.   UpdateData(TRUE);         // DoDataExchange
  454.   return 1;
  455. }
  456.  
  457. void Ctrans::Onrasdisc() 
  458. {
  459.   InitRAS();
  460. }
  461.